<?php


namespace EchoPHP\Cache;


interface CacheContract {

    /**
     * 判断缓存是否存在
     * @param $key
     * @return mixed
     */
    public function has($key);

    /**
     * 获取缓存值
     * @param $key
     * @param null $default
     * @return mixed
     */
    public function get($key, $default = null);

    /**
     * 获取一个缓存值并将其从缓存中移除
     * @param $key
     * @param null $default
     * @return mixed
     */
    public function pull($key, $default = null);

    /**
     * 设置一个缓存值，如果存在会覆盖
     * @param $key
     * @param $value
     * @param int $seconds
     * @return mixed
     */
    public function set($key, $value, $seconds);

    /**
     * 添加一个缓存值，如果存在不操作
     * @param $key
     * @param $value
     * @param int $seconds
     * @return mixed
     */
    public function add($key, $value, $seconds);

    /**
     * 缓存值自增
     * @param $key
     * @param int $step
     * @return mixed
     */
    public function increment($key, $step = 1);

    /**
     * 缓存值自减
     * @param $key
     * @param int $step
     * @return mixed
     */
    public function decrement($key, $step = 1);

    /**
     * 删除一个缓存值
     * @param $key
     * @return mixed
     */
    public function delete($key);

    /**
     * 清空所有缓存值
     * @return mixed
     */
    public function flush();


}